﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using IPlugin;

namespace Proyecto_3
{
    public partial class FormCalculadora : Form
    {
        public FormCalculadora()
        {
           InitializeComponent();

            //Cargamos plugins de la subcarpeta Plugins
            Global.Plugins.CargarPlugins(Application.StartupPath + @"\Plugins");
            cargarCombobox();
            
        }

       
        //Carga toda la colección
        private void cargarCombobox()
        {
            foreach (PluginUsable pluginOn in Global.Plugins.coleccionDePlugins)
            {
                cargarAlCombobox(pluginOn);
            }
        }


        //Carga un único plugin
        private void cargarAlCombobox(PluginUsable plugin)
        {
            comboBox1.Items.Add(plugin.InstanciaPlugin.nombre);
        }


        private void label1_Click(object sender, EventArgs e)
        {

        }


        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }


        private void buttonResultadoOperacion_Click(object sender, EventArgs e)
        {
            try
            {
                if ((textBox1.Text != "") && (textBox2.Text != ""))
                {
                    float a = (float)Convert.ToDecimal(textBox1.Text);
                    float b = (float)Convert.ToDecimal(textBox2.Text);

                    string simboloOperacion = this.comboBox1.GetItemText(this.comboBox1.SelectedItem);

                    float resultado = Global.Plugins.operarPlugin(simboloOperacion, a, b);

                    if (float.IsNaN(resultado))
                    {
                        labelResultado.Text = "ERROR";
                        MessageBox.Show("Error en los operandos para realizar "+simboloOperacion+".",
                                        "Error",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Exclamation,
                                        MessageBoxDefaultButton.Button1);
                    }
                    else
                    {
                        labelResultado.Text = "" + resultado;
                    }
                }    
            }
            catch (FormatException ex)
            {
                labelResultado.Text = "ERROR";
                MessageBox.Show("Error en el formato de los operandos para realizar.",
                                "Error",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Exclamation,
                                MessageBoxDefaultButton.Button1);
            }
            
        }

        private void buttonCargarPlugins_Click(object sender, EventArgs e)
        {
           /* if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {***/
                comboBox1.Items.Clear();
                string path = openFileDialog1.FileName;
                Global.Plugins.CargarPlugins(Application.StartupPath + @"\Plugins");
                cargarCombobox();
            }
        }

}

